<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="http://txt2tags.org">
<TITLE>Sliding puzzle (Tilitoli) manual</TITLE>
</HEAD><BODY BGCOLOR="white" TEXT="black">
<CENTER>
<H1>Sliding puzzle (Tilitoli) manual</H1>
<FONT SIZE="4"><I>Created by Aron Ocsvari</I></FONT><BR>
<FONT SIZE="4">Corrected by Robert Osztolykan</FONT>
</CENTER>


<H1>1. Introduction</H1>

<H2>1.1. Sliding puzzle rules</H2>

<P>
Sliding puzzle is a singleplayer logical game, which can be played on 3x3, 4x4, 5x5 or custom boards. Generally on a board there are numbers and an empty square, which needs to be swapped with one of its neighbours. When the game starts, the order of the fields is random, thus almost any combination is possible. The player's task is to sort the numbers provided in ascending order, by moving the empty square around the board. Once this result is achieved, the board is complete and the player wins.
</P>

<H2>1.2. About the boards</H2>

<P>
The game comes with three boards by default, however an unlimited number of custom boards can be added to make the game more challenging. It is worth noting that the board is not restricted to numbers, it can contain any element. Thus, a custom board can include tasks such as pairing (i.e. capitals with countries, bird sounds with their names), musical notes (i.e. to produce a certain melody), etc.
</P>
<P>
In order to create a board, an xml document should be created containing predefined fields (xml elements), forming the board's rules. The value of these fields is a sound file, which needs to be created for each field.
</P>
<P>
If the xml document contains less than 24 items, the program fills the remaining ones with joker fields. When sorting the fields, the order of the joker fields is not important, however they must follow the normal fields. The last item of every board should always be the empty field.
</P>

<H1>2. Getting started</H1>

<H2>2.1. System requirements</H2>

<P>
Since Sliding Puzzle is an audio game, a set of speakers or headphones are necessary. An additional 10 mb free diskspace should be available when installing, and further space for any custom boards (size may varry).
</P>
<P>
In order to run the game properly, a minimum of 50 MB RAM and 1 GHz processor required, 128 mb and a 2 GHZ recommended.
</P>
<P>
Please note, under linux the diskspace requirement can be different, as the Python interpreter plus additional modules should be installed (see 2.2.2).
Under Windows XP, if the <A HREF="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=29">Microsoft Visual C++ 2008 Redistributable Package</A> is not installed, the game won't start.
</P>

<H2>2.2. Installation</H2>

<H3>2.2.1. Windows</H3>

<P>
For the installation, follow the instructions of the installer. The player can change destination folder, create a desktop and start menu icons, etc. Start of the game, use these icons.
</P>

<H3>2.2.2. Linux</H3>

<P>
Before installing the game, Python ) and the correct version of Pygame should be installed. In certain Linux distributions the 'sudo apt-get' command can be used, such as 'sudo apt-get install python' and 'sudo apt-get install python-pygame'. Some distributions however use a different command line package manager. Please see the appropriate manual page. In other cases Python comes built in with the operating system, such as in Ubuntu.
To extract Sliding Puzzle, you can se the 'unzip' command, e.g. 'unzip SlidingPuzzleVersionNumber.zip'. (VersionNumber means the version of the game, e.g. 0.8). When the extraction is complete, enter the directory of the game ('cd FolderName') and type 'python tilitoli.py' and press enter to run it.
</P>

<H2>2.3. Main menu</H2>

<P>
When the appropriate file is executed the game starts. The intro of the game appears. It is possible to skip it using the escape key. This is followed by the music of the main menu and the name of the first menu item (New game). Use the up and down arrow keys to move between menu items, and the enter key to select. Although the menu is not visible on the screen, the virtual cursor moves, and the current menu item is spoken accordingly.
</P>
<P>
There are five menu items in the main menu:
</P>

<UL>
<LI>New game: by pressing enter here, the user gets to the board selection menu (which is outlined in the next chapter).
<LI>Speaker test: In this game, it is highly important to know which direction a sound is coming from. This menu item is especially useful if the user has earphones, as the left and right ones can be easily confused.
<LI>Language selection: In this menu, the user can change language of the game. The Sliding puzzle uses the operation system's default language when it starts.
<LI>Load saved game: If the player activates this menu by pressing enter, the last saved game wil be loaded. If there is no saved game, the cursor will go back to the main menu.
<LI>Quit: When this menu item is selected the music fades and the program closes.
</UL>

<H2>2.4. Board selection menu</H2>

<P>
By selecting the 'New game' menu item the list of available boards appear. The user can navigate between the available boards with the up and down arrow keys and start the game by pressing enter. At this point the menu music fades, the board loads and the game is ready to play.
</P>

<H2>2.5. language selection menu</H2>

<P>
If the user activates this menu, list of available languages appears. This submenu works like the main menu, so the user can move with up and down arrow keys, and activate a language with the enter key. In this case, the game swiches to the selected language, and the cursor goes back in the main menu. The game doesn't save this option when it closes.
</P>

<H2>2.6. Gameplay</H2>

<P>
Navigating on the board can be achieved by moving the cursor with the arrow keys. The up and down arrows move between rows, while the left and right arrows move from column to column. I also tried to illustrate movement on the board via sounds: if the user moves to the left or to the right of the board, the balance between the two speaker's volume shifts to the corresponding side. For example, if the cursor is positioned at the extreme left, only the left speaker can be heard.
</P>
<P>
A beeping sound marks the empty space, so that it can be easily distinguished from other fields. If the virtual cursor stands on a neighbour block and the user presses enter, the block changes place with the empty space. To help players, successful swaps are also indicated by a distinct sound. A certain sound can be also heard when the user is at the edges of the board. This sharper, snapping sound might be disturbing on a 3x3 board but it really comes in handy if the user is playing on a 5x5 board.
</P>
<P>
If you outed the correct order, you'd hear your number of steps (How many times you swapped the empty square with its neighbours). If you haven't finished the game, but you'd like to carry on later, you can save it with pressing v key. The Sliding puzzle can be saved only one board, so when the user saves another board, the previous one will be overwritten.
</P>

<H1>3. Creating xml files</H1>

<P>
Xml files are stored in the folder of languages named xmls (e.g. locale/en/xmls). For each xml file belongs an .ogg file with the same name, these contain the name of the board. If any of the two files is missing, the board will not be displayed in the list of available boards. The program currently uses only the 'ID' and 'Sound' elements of the xml file. The content of the 'Sound' element is the folder of the file and the name of the board, e.g. 3x3/3.ogg. It is important to note that Pygame recognises the / symbol (slash) as a path separator character instead of \ (backslash). The audio files of the game must be copied into the 'audio' folder.
</P>

<H1>4. Keyboard Shortcuts</H1>

<P>
For easier usability here are all the keys used to control the game:
</P>

<TABLE BORDER="1" CELLPADDING="4">
<TR>
<TH>Control key</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>home</TD>
<TD>In the menus, the cursor jumps to the first menu item, on the board it jumps to the left edge column.</TD>
</TR>
<TR>
<TD>end</TD>
<TD>In the menus, the cursor jumps to the last menu item, on the board, it junps to the right edge column.</TD>
</TR>
<TR>
<TD>enter</TD>
<TD>activates the selected menu items in the menu and swaps the selected and the empty block in the game if the move is possible</TD>
</TR>
<TR>
<TD>up arrow</TD>
<TD>moves up in the menu and one row up on the board in the game</TD>
</TR>
<TR>
<TD>down arrow</TD>
<TD>moves down in the menu and one row down on the board in the game</TD>
</TR>
<TR>
<TD>left arrow</TD>
<TD>moves one column left on the board in the game</TD>
</TR>
<TR>
<TD>right arrow</TD>
<TD>moves one column right on the board in the game</TD>
</TR>
<TR>
<TD>Page up</TD>
<TD>The cursor jumps to the first row of the board (the column's coordinate does not change).</TD>
</TR>
<TR>
<TD>Page down</TD>
<TD>The cursor jumps to the last row of the board (the column's coordinate does not change).</TD>
</TR>
<TR>
<TD>r</TD>
<TD>plays the number of the row where the virtual cursor stands on the board</TD>
</TR>
<TR>
<TD>c</TD>
<TD>plays the number of the column where the virtual cursor stands on the board</TD>
</TR>
<TR>
<TD>e</TD>
<TD>repeats the value of the field where the virtual cursor stands</TD>
</TR>
<TR>
<TD>s</TD>
<TD>Announces number of steps</TD>
</TR>
<TR>
<TD>o</TD>
<TD>plays the correct order.</TD>
</TR>
<TR>
<TD>v</TD>
<TD>Saves the game, and closes the board</TD>
</TR>
<TR>
<TD>F2</TD>
<TD>Pauses the background music.</TD>
</TR>
<TR>
<TD>f3</TD>
<TD>Resumes play the background music.</TD>
</TR>
<TR>
<TD>escape</TD>
<TD>Quits the game if pressed in the main menu, otherwise closes the opened board</TD>
</TR>
</TABLE>

<H1>5. Possible improvements in the future</H1>

<P>
I have countless ideas concerning the game's future development, although I could not implement these so far due to my studies. I considered multiplayer competition, which means in practice that after a successfully completed game, the program would send statistics, such as how many moves they needed, how long it took for them to complete a board, etc.) to a server, where they would be assessed by a program.
</P>
<P>
The idea of involving 5.1 sound also emerged, as it would allow much subtler sound effects on larger boards. As I have already prepared the way for this version with the sound playing function, I would like to realize this plan in the near future. A computer game that has an amazing graphic display caters for the amusement of sighted users, while an audio game that sounds good, and exploits the potential of stereo and multiple speaker setups can also offer a high-quality gaming experience and intriguing programming options. In my opinion, games of this kind can have significance not only for the blind but also for the sighted users, especially in situations when they, too, can only rely on their hearing.
</P>
<P>
To facilitate the creation of boards, I am planning to incorporate an xml editor in the program. This way, even those could design boards easily who are not familiar with the language.
</P>
<P>
As users can freely create their own boards, I also intend to launch an interactive webpage where they could upload them and so spare others the unnecessary work of designing boards that already exist.
</P>

<H1>6. Updates</H1>

<P>
The Sliding puzzle latest version can be downloaded <A HREF="http://audiopuzzle.googlecode.com">from this website</A>
</P>
<P>
E-mail: <A HREF="mailto:oaron1@gmail.com">oaron1@gmail.com</A>
</P>

<!-- html code generated by txt2tags 2.6 (http://txt2tags.org) -->
<!-- cmdline: txt2tags -\-target html en.txt -->
</BODY></HTML>
